package com.xlhj.yucloud.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xlhj.yucloud.entity.SysRoleInfo;
import com.xlhj.yucloud.web.model.RoleInfoReqDto;

import java.util.List;
import java.util.Set;

/**
 * @author: liucaijing
 * @description: SysRoleInfoService
 * @date: 2021/9/9 21:40
 */
public interface SysRoleInfoService extends IService<SysRoleInfo> {

    /**
     * 根据用户ID查询角色权限
     * @param userId
     * @return
     */
    Set<String> getRolePermsByUserId(Long userId);

    /**
     * 分页条件查询角色列表
     * @param reqDto
     * @return
     */
    Page<SysRoleInfo> selectRoleInfoPageList(RoleInfoReqDto reqDto);

    /**
     * 根据角色ID删除角色信息
     * @param roleIds
     */
    void deleteRoleByIds(Long[] roleIds);

    /**
     * 变更角色状态
     * @param roleId
     * @param status
     * @param userName
     */
    void changeRoleStatus(Long roleId, Integer status, String userName);

    /**
     * 检查角色名称是否唯一
     * @param roleName
     * @return
     */
    Long checkRoleNameUnique(String roleName);

    /**
     * 检查角色标识是否唯一
     * @param roleKey
     * @return
     */
    Long checkRoleKeyUnique(String roleKey);

    /**
     * 根据用户ID查询角色
     * @param userId
     * @return
     */
    List<Long> selectRoleListByUserId(Long userId);

    /**
     * 查询所有角色信息
     * @return
     */
    List<SysRoleInfo> selectAllRoleInfo();
}
